home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1992 June: ROMin Holiday / ADC Developer CD (1992-06) (''ROMin Holiday'')_iso / Developer Connection - 06-1992.iso / Development Platforms / HyperCard Related / XCMDs & XFCNs / Alias XFCN / source / trap.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-03-22  |  1.7 KB  |  86 lines  |  [TEXT/MPS ]

  1. /*
  2.     trap.c
  3.     Functions to support testing for traps
  4.     and testing for Gestalt features.
  5.     
  6.     11-13-90 1.0d3 JRP    original
  7. */
  8.  
  9. #include    <Types.h>
  10. #include    <Traps.h>
  11. #include    <OSUtils.h>
  12. #include    <GestaltEqu.h>
  13.  
  14. #include    "trap.pro"
  15.  
  16. short aliasAvailable(void)
  17. /*
  18.     Returns true if Alias is available.
  19. */
  20. {
  21.     if(gestaltAvailable())
  22.         return(Gestalt(gestaltAliasMgrAttr, gestaltAliasMgrPresent)==noErr);
  23.     else
  24.         return false;
  25. }    /*    --------------------------------------------    aliasAvailable        */
  26.  
  27. short gestaltAvailable(void)
  28. /*
  29.     Returns true if gestalt is available.
  30.     From IM-VI. chap 3, page 8
  31. */
  32. {
  33.     #define    _Gestalt    0xA1AD
  34.     
  35.     return(trapAvailable(_Gestalt));
  36. }    /*    --------------------------------------------    gestaltAvailable        */
  37.  
  38. short getTrapType(theTrap)
  39. /*
  40.     Returns the trap type.
  41.     From IM-VI. chap 3, page 8
  42. */
  43.     short    theTrap;
  44. {
  45.     #define    trapMask    0x0800
  46.     
  47.     if(theTrap & trapMask)
  48.         return ToolTrap;
  49.     else
  50.         return OSTrap;
  51. }    /*    --------------------------------------------    getTrapType        */
  52.  
  53. short numToolboxTraps(void)
  54. /*
  55.     Returns the number of toolbox traps.
  56.     From IM-VI. chap 3, page 8
  57. */
  58. {
  59.     if(NGetTrapAddress(_InitGraf, ToolTrap)==
  60.             NGetTrapAddress(0xAA6E, ToolTrap))
  61.                 return 0x200;
  62.     else
  63.         return 0x400;
  64. }    /*    --------------------------------------------    numToolboxTraps        */
  65.  
  66. short trapAvailable(theTrap)
  67. /*
  68.     Returns true if the trap is available.
  69.     From IM-VI. chap 3, page 8
  70. */
  71.     short    theTrap;
  72. {
  73.     short    tType;
  74.  
  75.     tType = getTrapType(theTrap);
  76.     if(tType==ToolTrap)
  77.     {
  78.         theTrap = theTrap & 0x07FF;
  79.         if(theTrap>=numToolboxTraps())
  80.             theTrap = _Unimplemented;
  81.     }
  82.     return(NGetTrapAddress(theTrap, tType)!=
  83.                 NGetTrapAddress(_Unimplemented, ToolTrap));
  84. }    /*    --------------------------------------------    trapAvailable    */
  85.  
  86.